package com.efast.cafe.portal.dao.api;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.efast.cafe.portal.bean.api.PortalApiModuleBean;
import com.efast.cafe.portal.bean.api.PortalApiProjectDto;

/**
 * <p>接口</p>
 * <p>Table: portal_api_module - 所属模块定义</p>
 *
 * @since ${.now}
 */

public interface PortalApiModuleDao {
	
	/**
	 * 新增module
	 * @Date        :      2017年8月11日
	 * @param apiModuleBean
	 * @return
	 */
	public int insertApiModule(PortalApiModuleBean portalApiModuleBean);

	/**
	 * 删除module
	 * @Date        :      2017年8月11日
	 * @param portalApiModuleBean
	 */
	public void updateApiModule(PortalApiModuleBean portalApiModuleBean);

	/**
	 * 删除ApiModule
	 * @Date        :      2017年8月11日
	 * @param portalApiModuleBean
	 */
	public void deleteApiModule(PortalApiModuleBean portalApiModuleBean);
	
	/**
	 * 通过moduleId查询关联有效的Object的个数
	 * @Date        :      2017年8月11日
	 * @param moduleId
	 * @return
	 */
	public int objCountByModuleId(@Param(value="moduleId")Integer moduleId);
	
	/**
	 * module升级
	 * @Date        :      2017年8月15日
	 * @param portalApiModuleBean
	 * @return
	 */
	public int upgradeApiModule(PortalApiModuleBean portalApiModuleBean);
	
	/**
	 * 通过systemid查询所属有效module
	 * @Date        :      2017年8月19日
	 * @param portalApiProjectDto
	 * @return
	 */
	public List<PortalApiModuleBean> treeApiModuleBySystemId(PortalApiProjectDto portalApiProjectDto);
	
	/**
	 * 发布升级模块的时候校验版本是否存在重复
	 * @Date        :      2017年8月22日
	 * @param apiModuleBean
	 * @return
	 */
	public int moduleVersionIsExistWhenInsert(PortalApiModuleBean apiModuleBean);
	
	/**
	 * 修改模块时候校验版本是否存在重复
	 * @Date        :      2017年8月22日
	 * @param apiModuleBean
	 * @return
	 */
	public int moduleVersionIsExistWhenUpdate(PortalApiModuleBean apiModuleBean);
	
	/**
	 * 查询同一个系统底下，某个module的所有版本
	 * @Date        :      2017年8月24日
	 * @param apiModuleBean
	 * @return
	 */
	public List<PortalApiModuleBean> queryModuleBySystemIdAndUUid(PortalApiModuleBean apiModuleBean);
	
	/**
	 * 校验module标识符，在同一个system下面，不能出现重复的module的标识符
	 * @Date        :      2017年9月8日
	 * @param apiModuleBean
	 * @return
	 */
	public int moduleIndentifierCount(PortalApiModuleBean apiModuleBean);
}